function w_opt = solve_SDP(h, hw, p_max, p_th)
    % 输入参数：
    % h: 信道向量 (Nx1 复向量)
    % hw: 受限信道向量 (Nx1 复向量)
    % p_max: 最大功率约束
    % p_th: 阈值功率约束

    % 问题维度
    N = length(h);
    
    % 构造 Hermitian 矩阵 H 和 H_w
    H = h * h';        % H = h * h^H
    Hw = hw * hw';     % H_w = hw * hw^H

    % 使用 CVX 求解 SDP 
    cvx_begin sdp quiet
        variable W(N, N) hermitian % 半正定矩阵变量
        maximize(trace(H * W))     % 目标函数：最大化 Tr(HW)
        subject to
            trace(W) <= p_max;     % 约束 1：功率限制
            trace(Hw * W) <= p_th; % 约束 2：阈值功率限制
            W >= 0;                % 约束 3：半正定约束
    cvx_end

    % 提取结果：通过特征值分解恢复 w_opt
    [V, D] = eig(W);              % W 的特征值分解
    [~, max_idx] = max(diag(D));  % 找到最大特征值的索引
    w_opt = sqrt(D(max_idx, max_idx)) * V(:, max_idx); % 恢复 w_opt
end
